home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 November / Freeware November 1998.img / dist / fw_emacs.idb / usr / freeware / info / gnus-3.z / gnus-3 (.txt)
GNU Info File  |  1998-10-27  |  49KB  |  937 lines

  1. This is Info file ../info/gnus, produced by Makeinfo-1.63 from the
  2. input file gnus.texi.
  3.    This file documents Gnus, the GNU Emacs newsreader.
  4.    Copyright (C) 1995,96 Free Software Foundation, Inc.
  5.    Permission is granted to make and distribute verbatim copies of this
  6. manual provided the copyright notice and this permission notice are
  7. preserved on all copies.
  8.    Permission is granted to copy and distribute modified versions of
  9. this manual under the conditions for verbatim copying, provided also
  10. that the entire resulting derived work is distributed under the terms
  11. of a permission notice identical to this one.
  12.    Permission is granted to copy and distribute translations of this
  13. manual into another language, under the above conditions for modified
  14. versions.
  15. File: gnus,  Node: Customizing Threading,  Next: Thread Commands,  Up: Threading
  16. Customizing Threading
  17. ---------------------
  18. `gnus-show-threads'
  19.      If this variable is `nil', no threading will be done, and all of
  20.      the rest of the variables here will have no effect.  Turning
  21.      threading off will speed group selection up a bit, but it is sure
  22.      to make reading slower and more awkward.
  23. `gnus-fetch-old-headers'
  24.      If non-`nil', Gnus will attempt to build old threads by fetching
  25.      more old headers--headers to articles that are marked as read.  If
  26.      you would like to display as few summary lines as possible, but
  27.      still connect as many loose threads as possible, you should set
  28.      this variable to `some' or a number.  If you set it to a number,
  29.      no more than that number of extra old headers will be fetched.  In
  30.      either case, fetching old headers only works if the backend you
  31.      are using carries overview files--this would normally be `nntp',
  32.      `nnspool' and `nnml'.  Also remember that if the root of the
  33.      thread has been expired by the server, there's not much Gnus can
  34.      do about that.
  35. `gnus-build-sparse-threads'
  36.      Fetching old headers can be slow.  A low-rent similar effect can be
  37.      gotten by setting this variable to `some'.  Gnus will then look at
  38.      the complete `References' headers of all articles and try to string
  39.      articles that belong in the same thread together.  This will leave
  40.      "gaps" in the threading display where Gnus guesses that an article
  41.      is missing from the thread.  (These gaps appear like normal summary
  42.      lines.  If you select a gap, Gnus will try to fetch the article in
  43.      question.)  If this variable is `t', Gnus will display all these
  44.      "gaps" without regard for whether they are useful for completing
  45.      the thread or not.  Finally, if this variable is `more', Gnus
  46.      won't cut off sparse leaf nodes that don't lead anywhere.  This
  47.      variable is `nil' by default.
  48. `gnus-summary-gather-subject-limit'
  49.      Loose threads are gathered by comparing subjects of articles.  If
  50.      this variable is `nil', Gnus requires an exact match between the
  51.      subjects of the loose threads before gathering them into one big
  52.      super-thread.  This might be too strict a requirement, what with
  53.      the presence of stupid newsreaders that chop off long subjects
  54.      lines.  If you think so, set this variable to, say, 20 to require
  55.      that only the first 20 characters of the subjects have to match.
  56.      If you set this variable to a really low number, you'll find that
  57.      Gnus will gather everything in sight into one thread, which isn't
  58.      very helpful.
  59.      If you set this variable to the special value `fuzzy', Gnus will
  60.      use a fuzzy string comparison algorithm on the subjects.
  61. `gnus-simplify-subject-fuzzy-regexp'
  62.      This can either be a regular expression or list of regular
  63.      expressions that match strings that will be removed from subjects
  64.      if fuzzy subject simplification is used.
  65. `gnus-simplify-ignored-prefixes'
  66.      If you set `gnus-summary-gather-subject-limit' to something as low
  67.      as 10, you might consider setting this variable to something
  68.      sensible:
  69.           (setq gnus-simplify-ignored-prefixes
  70.                 (concat
  71.                  "\\`\\[?\\("
  72.                  (mapconcat 'identity
  73.                             '("looking"
  74.                                "wanted" "followup" "summary\\( of\\)?"
  75.                                "help" "query" "problem" "question"
  76.                                "answer" "reference" "announce"
  77.                                "How can I" "How to" "Comparison of"
  78.                                ;; ...
  79.                                )
  80.                             "\\|")
  81.                             "\\)\\s *\\("
  82.                             (mapconcat 'identity
  83.                                        '("for" "for reference" "with" "about")
  84.                                        "\\|")
  85.                             "\\)?\\]?:?[ \t]*"))
  86.      All words that match this regexp will be removed before comparing
  87.      two subjects.
  88. `gnus-summary-gather-exclude-subject'
  89.      Since loose thread gathering is done on subjects only, that might
  90.      lead to many false hits, especially with certain common subjects
  91.      like `' and `(none)'.  To make the situation slightly better, you
  92.      can use the regexp `gnus-summary-gather-exclude-subject' to say
  93.      what subjects should be excluded from the gathering process.  The
  94.      default is `^ *$\\|^(none)$'.
  95. `gnus-summary-thread-gathering-function'
  96.      Gnus gathers threads by looking at `Subject' headers.  This means
  97.      that totally unrelated articles may end up in the same "thread",
  98.      which is confusing.  An alternate approach is to look at all the
  99.      `Message-ID's in all the `References' headers to find matches.
  100.      This will ensure that no gathered threads ever includes unrelated
  101.      articles, but it's also means that people who have posted with
  102.      broken newsreaders won't be gathered properly.  The choice is
  103.      yours--plague or cholera:
  104.     `gnus-gather-threads-by-subject'
  105.           This function is the default gathering function and looks at
  106.           `Subject's exclusively.
  107.     `gnus-gather-threads-by-references'
  108.           This function looks at `References' headers exclusively.
  109.      If you want to test gathering by `References', you could say
  110.      something like:
  111.           (setq gnus-summary-thread-gathering-function
  112.                 'gnus-gather-threads-by-references)
  113. `gnus-summary-make-false-root'
  114.      If non-`nil', Gnus will gather all loose subtrees into one big tree
  115.      and create a dummy root at the top.  (Wait a minute.  Root at the
  116.      top?  Yup.)  Loose subtrees occur when the real root has expired,
  117.      or you've read or killed the root in a previous session.
  118.      When there is no real root of a thread, Gnus will have to fudge
  119.      something.  This variable says what fudging method Gnus should use.
  120.      There are four possible values:
  121.     `adopt'
  122.           Gnus will make the first of the orphaned articles the parent.
  123.           This parent will adopt all the other articles.  The adopted
  124.           articles will be marked as such by pointy brackets (`<>')
  125.           instead of the standard square brackets (`[]').  This is the
  126.           default method.
  127.     `dummy'
  128.           Gnus will create a dummy summary line that will pretend to be
  129.           the parent.  This dummy line does not correspond to any real
  130.           article, so selecting it will just select the first real
  131.           article after the dummy article.
  132.           `gnus-summary-dummy-line-format' is used to specify the
  133.           format of the dummy roots.  It accepts only one format spec:
  134.           `S', which is the subject of the article.  *Note Formatting
  135.           Variables::.
  136.     `empty'
  137.           Gnus won't actually make any article the parent, but simply
  138.           leave the subject field of all orphans except the first
  139.           empty.  (Actually, it will use `gnus-summary-same-subject' as
  140.           the subject (*note Summary Buffer Format::.).)
  141.     `none'
  142.           Don't make any article parent at all.  Just gather the
  143.           threads and display them after one another.
  144.     `nil'
  145.           Don't gather loose threads.
  146. `gnus-thread-hide-subtree'
  147.      If non-`nil', all threads will be hidden when the summary buffer is
  148.      generated.
  149. `gnus-thread-hide-killed'
  150.      if you kill a thread and this variable is non-`nil', the subtree
  151.      will be hidden.
  152. `gnus-thread-ignore-subject'
  153.      Sometimes somebody changes the subject in the middle of a thread.
  154.      If this variable is non-`nil', the subject change is ignored.  If
  155.      it is `nil', which is the default, a change in the subject will
  156.      result in a new thread.
  157. `gnus-thread-indent-level'
  158.      This is a number that says how much each sub-thread should be
  159.      indented.  The default is `4'.
  160. File: gnus,  Node: Thread Commands,  Prev: Customizing Threading,  Up: Threading
  161. Thread Commands
  162. ---------------
  163. `T k'
  164. `M-C-k'
  165.      Mark all articles in the current sub-thread as read
  166.      (`gnus-summary-kill-thread').  If the prefix argument is positive,
  167.      remove all marks instead.  If the prefix argument is negative, tick
  168.      articles instead.
  169. `T l'
  170. `M-C-l'
  171.      Lower the score of the current thread
  172.      (`gnus-summary-lower-thread').
  173. `T i'
  174.      Increase the score of the current thread
  175.      (`gnus-summary-raise-thread').
  176. `T #'
  177.      Set the process mark on the current thread (`gnus-uu-mark-thread').
  178. `T M-#'
  179.      Remove the process mark from the current thread
  180.      (`gnus-uu-unmark-thread').
  181. `T T'
  182.      Toggle threading (`gnus-summary-toggle-threads').
  183. `T s'
  184.      Expose the thread hidden under the current article, if any
  185.      (`gnus-summary-show-thread').
  186. `T h'
  187.      Hide the current (sub)thread (`gnus-summary-hide-thread').
  188. `T S'
  189.      Expose all hidden threads (`gnus-summary-show-all-threads').
  190. `T H'
  191.      Hide all threads (`gnus-summary-hide-all-threads').
  192. `T t'
  193.      Re-thread the thread the current article is part of
  194.      (`gnus-summary-rethread-current').  This works even when the
  195.      summary buffer is otherwise unthreaded.
  196. `T ^'
  197.      Make the current article the child of the marked (or previous)
  198.      article (`gnus-summary-reparent-thread'.
  199.    The following commands are thread movement commands.  They all
  200. understand the numeric prefix.
  201. `T n'
  202.      Go to the next thread (`gnus-summary-next-thread').
  203. `T p'
  204.      Go to the previous thread (`gnus-summary-prev-thread').
  205. `T d'
  206.      Descend the thread (`gnus-summary-down-thread').
  207. `T u'
  208.      Ascend the thread (`gnus-summary-up-thread').
  209. `T o'
  210.      Go to the top of the thread (`gnus-summary-top-thread').
  211.    If you ignore subject while threading, you'll naturally end up with
  212. threads that have several different subjects in them.  If you then issue
  213. a command like `T k' (`gnus-summary-kill-thread') you might not wish to
  214. kill the entire thread, but just those parts of the thread that have
  215. the same subject as the current article.  If you like this idea, you
  216. can fiddle with `gnus-thread-operation-ignore-subject'.  If is is
  217. non-`nil' (which it is by default), subjects will be ignored when doing
  218. thread commands.  If this variable is `nil', articles in the same
  219. thread with different subjects will not be included in the operation in
  220. question.  If this variable is `fuzzy', only articles that have
  221. subjects that are fuzzily equal will be included.
  222. File: gnus,  Node: Sorting,  Next: Asynchronous Fetching,  Prev: Threading,  Up: The Summary Buffer
  223. Sorting
  224. =======
  225.    If you are using a threaded summary display, you can sort the
  226. threads by setting `gnus-thread-sort-functions', which is a list of
  227. functions.  By default, sorting is done on article numbers.  Ready-made
  228. sorting predicate functions include `gnus-thread-sort-by-number',
  229. `gnus-thread-sort-by-author', `gnus-thread-sort-by-subject',
  230. `gnus-thread-sort-by-date', `gnus-thread-sort-by-score', and
  231. `gnus-thread-sort-by-total-score'.
  232.    Each function takes two threads and return non-`nil' if the first
  233. thread should be sorted before the other.  Note that sorting really is
  234. normally done by looking only at the roots of each thread.  If you use
  235. more than one function, the primary sort key should be the last function
  236. in the list.  You should probably always include
  237. `gnus-thread-sort-by-number' in the list of sorting
  238. functions--preferably first.  This will ensure that threads that are
  239. equal with respect to the other sort criteria will be displayed in
  240. ascending article order.
  241.    If you would like to sort by score, then by subject, and finally by
  242. number, you could do something like:
  243.      (setq gnus-thread-sort-functions
  244.            '(gnus-thread-sort-by-number
  245.              gnus-thread-sort-by-subject
  246.              gnus-thread-sort-by-score))
  247.    The threads that have highest score will be displayed first in the
  248. summary buffer.  When threads have the same score, they will be sorted
  249. alphabetically.  The threads that have the same score and the same
  250. subject will be sorted by number, which is (normally) the sequence in
  251. which the articles arrived.
  252.    If you want to sort by score and then reverse arrival order, you
  253. could say something like:
  254.      (setq gnus-thread-sort-functions
  255.            '((lambda (t1 t2)
  256.                (not (gnus-thread-sort-by-number t1 t2)))
  257.              gnus-thread-sort-by-score))
  258.    The function in the `gnus-thread-score-function' variable (default
  259. `+') is used for calculating the total score of a thread.  Useful
  260. functions might be `max', `min', or squared means, or whatever tickles
  261. your fancy.
  262.    If you are using an unthreaded display for some strange reason or
  263. other, you have to fiddle with the `gnus-article-sort-functions'
  264. variable.  It is very similar to the `gnus-thread-sort-functions',
  265. except that is uses slightly different functions for article
  266. comparison.  Available sorting predicate functions are
  267. `gnus-article-sort-by-number', `gnus-article-sort-by-author',
  268. `gnus-article-sort-by-subject', `gnus-article-sort-by-date', and
  269. `gnus-article-sort-by-score'.
  270.    If you want to sort an unthreaded summary display by subject, you
  271. could say something like:
  272.      (setq gnus-article-sort-functions
  273.            '(gnus-article-sort-by-number
  274.              gnus-article-sort-by-subject))
  275. File: gnus,  Node: Asynchronous Fetching,  Next: Article Caching,  Prev: Sorting,  Up: The Summary Buffer
  276. Asynchronous Article Fetching
  277. =============================
  278.    If you read your news from an NNTP server that's far away, the
  279. network latencies may make reading articles a chore.  You have to wait
  280. for a while after pressing `n' to go to the next article before the
  281. article appears.  Why can't Gnus just go ahead and fetch the article
  282. while you are reading the previous one? Why not, indeed.
  283.    First, some caveats.  There are some pitfalls to using asynchronous
  284. article fetching, especially the way Gnus does it.
  285.    Let's say you are reading article 1, which is short, and article 2 is
  286. quite long, and you are not interested in reading that.  Gnus does not
  287. know this, so it goes ahead and fetches article 2.  You decide to read
  288. article 3, but since Gnus is in the process of fetching article 2, the
  289. connection is blocked.
  290.    To avoid these situations, Gnus will open two (count 'em two)
  291. connections to the server.  Some people may think this isn't a very nice
  292. thing to do, but I don't see any real alternatives.  Setting up that
  293. extra connection takes some time, so Gnus startup will be slower.
  294.    Gnus will fetch more articles than you will read.  This will mean
  295. that the link between your machine and the NNTP server will become more
  296. loaded than if you didn't use article pre-fetch.  The server itself will
  297. also become more loaded--both with the extra article requests, and the
  298. extra connection.
  299.    Ok, so now you know that you shouldn't really use this thing...
  300. unless you really want to.
  301.    Here's how:  Set `gnus-asynchronous' to `t'.  The rest should happen
  302. automatically.
  303.    You can control how many articles that are to be pre-fetched by
  304. setting `nntp-async-number'.  This is five by default, which means that
  305. when you read an article in the group, `nntp' will pre-fetch the next
  306. five articles.  If this variable is `t', `nntp' will pre-fetch all the
  307. articles that it can without bound.  If it is `nil', no pre-fetching
  308. will be made.
  309.    You may wish to create some sort of scheme for choosing which
  310. articles that `nntp' should consider as candidates for pre-fetching.
  311. For instance, you may wish to pre-fetch all articles with high scores,
  312. and not pre-fetch low-scored articles.  You can do that by setting the
  313. `gnus-asynchronous-article-function', which will be called with an
  314. alist where the keys are the article numbers.  Your function should
  315. return an alist where the articles you are not interested in have been
  316. removed.  You could also do sorting on article score and the like.
  317. File: gnus,  Node: Article Caching,  Next: Persistent Articles,  Prev: Asynchronous Fetching,  Up: The Summary Buffer
  318. Article Caching
  319. ===============
  320.    If you have an *extremely* slow NNTP connection, you may consider
  321. turning article caching on.  Each article will then be stored locally
  322. under your home directory.  As you may surmise, this could potentially
  323. use *huge* amounts of disk space, as well as eat up all your inodes so
  324. fast it will make your head swim.  In vodka.
  325.    Used carefully, though, it could be just an easier way to save
  326. articles.
  327.    To turn caching on, set `gnus-use-cache' to `t'.  By default, all
  328. articles that are ticked or marked as dormant will then be copied over
  329. to your local cache (`gnus-cache-directory').  Whether this cache is
  330. flat or hierarchal is controlled by the `gnus-use-long-file-name'
  331. variable, as usual.
  332.    When re-select a ticked or dormant article, it will be fetched from
  333. the cache instead of from the server.  As articles in your cache will
  334. never expire, this might serve as a method of saving articles while
  335. still keeping them where they belong.  Just mark all articles you want
  336. to save as dormant, and don't worry.
  337.    When an article is marked as read, is it removed from the cache.
  338.    The entering/removal of articles from the cache is controlled by the
  339. `gnus-cache-enter-articles' and `gnus-cache-remove-articles' variables.
  340. Both are lists of symbols.  The first is `(ticked dormant)' by
  341. default, meaning that ticked and dormant articles will be put in the
  342. cache.  The latter is `(read)' by default, meaning that articles that
  343. are marked as read are removed from the cache.  Possibly symbols in
  344. these two lists are `ticked', `dormant', `unread' and `read'.
  345.    So where does the massive article-fetching and storing come into the
  346. picture?  The `gnus-jog-cache' command will go through all subscribed
  347. newsgroups, request all unread articles, and store them in the cache.
  348. You should only ever, ever ever ever, use this command if 1) your
  349. connection to the NNTP server is really, really, really slow and 2) you
  350. have a really, really, really huge disk.  Seriously.
  351.    It is likely that you do not want caching on some groups.  For
  352. instance, if your `nnml' mail is located under your home directory, it
  353. makes no sense to cache it somewhere else under your home directory.
  354. Unless you feel that it's neat to use twice as much space.  To limit
  355. the caching, you could set the `gnus-uncacheable-groups' regexp to
  356. `^nnml', for instance.  This variable is `nil' by default.
  357.    The cache stores information on what articles it contains in its
  358. active file (`gnus-cache-active-file').  If this file (or any other
  359. parts of the cache) becomes all messed up for some reason or other, Gnus
  360. offers two functions that will try to set things right.  `M-x
  361. gnus-cache-generate-nov-databases' will (re)build all the NOV files,
  362. and `gnus-cache-generate-active' will (re)generate the active file.
  363. File: gnus,  Node: Persistent Articles,  Next: Article Backlog,  Prev: Article Caching,  Up: The Summary Buffer
  364. Persistent Articles
  365. ===================
  366.    Closely related to article caching, we have "persistent articles".
  367. In fact, it's just a different way of looking at caching, and much more
  368. useful in my opinion.
  369.    Say you're reading a newsgroup, and you happen on to some valuable
  370. gem that you want to keep and treasure forever.  You'd normally just
  371. save it (using one of the many saving commands) in some file.  The
  372. problem with that is that it's just, well, yucky.  Ideally you'd prefer
  373. just having the article remain in the group where you found it forever;
  374. untouched by the expiry going on at the news server.
  375.    This is what a "persistent article" is--an article that just won't
  376. be deleted.  It's implemented using the normal cache functions, but you
  377. use two explicit commands for managing persistent articles:
  378.      Make the current article persistent (`gnus-cache-enter-article').
  379. `M-*'
  380.      Remove the current article from the persistent articles
  381.      (`gnus-cache-remove-article').  This will normally delete the
  382.      article.
  383.    Both these commands understand the process/prefix convention.
  384.    To avoid having all ticked articles (and stuff) entered into the
  385. cache, you should set `gnus-use-cache' to `passive' if you're just
  386. interested in persistent articles:
  387.      (setq gnus-use-cache 'passive)
  388. File: gnus,  Node: Article Backlog,  Next: Saving Articles,  Prev: Persistent Articles,  Up: The Summary Buffer
  389. Article Backlog
  390. ===============
  391.    If you have a slow connection, but the idea of using caching seems
  392. unappealing to you (and it is, really), you can help the situation some
  393. by switching on the "backlog".  This is where Gnus will buffer already
  394. read articles so that it doesn't have to re-fetch articles you've
  395. already read.  This only helps if you are in the habit of re-selecting
  396. articles you've recently read, of course.  If you never do that,
  397. turning the backlog on will slow Gnus down a little bit, and increase
  398. memory usage some.
  399.    If you set `gnus-keep-backlog' to a number N, Gnus will store at
  400. most N old articles in a buffer for later re-fetching.  If this
  401. variable is non-`nil' and is not a number, Gnus will store *all* read
  402. articles, which means that your Emacs will grow without bound before
  403. exploding and taking your machine down with you.  I put that in there
  404. just to keep y'all on your toes.
  405.    This variable is `nil' by default.
  406. File: gnus,  Node: Saving Articles,  Next: Decoding Articles,  Prev: Article Backlog,  Up: The Summary Buffer
  407. Saving Articles
  408. ===============
  409.    Gnus can save articles in a number of ways.  Below is the
  410. documentation for saving articles in a fairly straight-forward fashion
  411. (i.e., little processing of the article is done before it is saved).
  412. For a different approach (uudecoding, unsharing) you should use
  413. `gnus-uu' (*note Decoding Articles::.).
  414.    If `gnus-save-all-headers' is non-`nil', Gnus will not delete
  415. unwanted headers before saving the article.
  416.    If the preceding variable is `nil', all headers that match the
  417. `gnus-saved-headers' regexp will be kept, while the rest will be
  418. deleted before saving.
  419. `O o'
  420.      Save the current article using the default article saver
  421.      (`gnus-summary-save-article').
  422. `O m'
  423.      Save the current article in mail format
  424.      (`gnus-summary-save-article-mail').
  425. `O r'
  426.      Save the current article in rmail format
  427.      (`gnus-summary-save-article-rmail').
  428. `O f'
  429.      Save the current article in plain file format
  430.      (`gnus-summary-save-article-file').
  431. `O b'
  432.      Save the current article body in plain file format
  433.      (`gnus-summary-save-article-body-file').
  434. `O h'
  435.      Save the current article in mh folder format
  436.      (`gnus-summary-save-article-folder').
  437. `O v'
  438.      Save the current article in a VM folder
  439.      (`gnus-summary-save-article-vm').
  440. `O p'
  441.      Save the current article in a pipe.  Uhm, like, what I mean
  442.      is--Pipe the current article to a process
  443.      (`gnus-summary-pipe-output').
  444.    All these commands use the process/prefix convention (*note
  445. Process/Prefix::.).  If you save bunches of articles using these
  446. functions, you might get tired of being prompted for files to save each
  447. and every article in.  The prompting action is controlled by the
  448. `gnus-prompt-before-saving' variable, which is `always' by default,
  449. giving you that excessive prompting action you know and loathe.  If you
  450. set this variable to `t' instead, you'll be prompted just once for each
  451. series of articles you save.  If you like to really have Gnus do all
  452. your thinking for you, you can even set this variable to `nil', which
  453. means that you will never be prompted for files to save articles in.
  454. Gnus will simply save all the articles in the default files.
  455.    You can customize the `gnus-default-article-saver' variable to make
  456. Gnus do what you want it to.  You can use any of the four ready-made
  457. functions below, or you can create your own.
  458. `gnus-summary-save-in-rmail'
  459.      This is the default format, "babyl".  Uses the function in the
  460.      `gnus-rmail-save-name' variable to get a file name to save the
  461.      article in.  The default is `gnus-plain-save-name'.
  462. `gnus-summary-save-in-mail'
  463.      Save in a Unix mail (mbox) file.  Uses the function in the
  464.      `gnus-mail-save-name' variable to get a file name to save the
  465.      article in.  The default is `gnus-plain-save-name'.
  466. `gnus-summary-save-in-file'
  467.      Append the article straight to an ordinary file.  Uses the
  468.      function in the `gnus-file-save-name' variable to get a file name
  469.      to save the article in.  The default is `gnus-numeric-save-name'.
  470. `gnus-summary-save-body-in-file'
  471.      Append the article body to an ordinary file.  Uses the function in
  472.      the `gnus-file-save-name' variable to get a file name to save the
  473.      article in.  The default is `gnus-numeric-save-name'.
  474. `gnus-summary-save-in-folder'
  475.      Save the article to an MH folder using `rcvstore' from the MH
  476.      library.  Uses the function in the `gnus-folder-save-name' variable
  477.      to get a file name to save the article in.  The default is
  478.      `gnus-folder-save-name', but you can also use
  479.      `gnus-Folder-save-name'.  The former creates capitalized names, and
  480.      the latter does not.
  481. `gnus-summary-save-in-vm'
  482.      Save the article in a VM folder.  You have to have the VM mail
  483.      reader to use this setting.
  484.    All of these functions, except for the last one, will save the
  485. article in the `gnus-article-save-directory', which is initialized from
  486. the `SAVEDIR' environment variable.  This is `~/News/' by default.
  487.    As you can see above, the functions use different functions to find a
  488. suitable name of a file to save the article in.  Below is a list of
  489. available functions that generate names:
  490. `gnus-Numeric-save-name'
  491.      Generates file names that look like `~/News/Alt.andrea-dworkin/45'.
  492. `gnus-numeric-save-name'
  493.      Generates file names that look like `~/News/alt.andrea-dworkin/45'.
  494. `gnus-Plain-save-name'
  495.      Generates file names that look like `~/News/Alt.andrea-dworkin'.
  496. `gnus-plain-save-name'
  497.      Generates file names that look like `~/News/alt.andrea-dworkin'.
  498.    You can have Gnus suggest where to save articles by plonking a
  499. regexp into the `gnus-split-methods' alist.  For instance, if you would
  500. like to save articles related to Gnus in the file `gnus-stuff', and
  501. articles related to VM in `vm-stuff', you could set this variable to
  502. something like:
  503.      (("^Subject:.*gnus\\|^Newsgroups:.*gnus" "gnus-stuff")
  504.       ("^Subject:.*vm\\|^Xref:.*vm" "vm-stuff")
  505.       (my-choosing-function "../other-dir/my-stuff")
  506.       ((equal gnus-newsgroup-name "mail.misc") "mail-stuff"))
  507.    We see that this is a list where each element is a list that has two
  508. elements--the "match" and the "file".  The match can either be a string
  509. (in which case it is used as a regexp to match on the article head); it
  510. can be a symbol (which will be called as a function with the group name
  511. as a parameter); or it can be a list (which will be `eval'ed).  If any
  512. of these actions have a non-`nil' result, the "file" will be used as a
  513. default prompt.  In addition, the result of the operation itself will
  514. be used if the function or form called returns a string or a list of
  515. strings.
  516.    You basically end up with a list of file names that might be used
  517. when saving the current article.  (All "matches" will be used.)  You
  518. will then be prompted for what you really want to use as a name, with
  519. file name completion over the results from applying this variable.
  520.    This variable is `((gnus-article-archive-name))' by default, which
  521. means that Gnus will look at the articles it saves for an
  522. `Archive-name' line and use that as a suggestion for the file name.
  523.    Finally, you have the `gnus-use-long-file-name' variable.  If it is
  524. `nil', all the preceding functions will replace all periods (`.') in
  525. the group names with slashes (`/')--which means that the functions will
  526. generate hierarchies of directories instead of having all the files in
  527. the toplevel directory (`~/News/alt/andrea-dworkin' instead of
  528. `~/News/alt.andrea-dworkin'.)  This variable is `t' by default on most
  529. systems.  However, for historical reasons, this is `nil' on Xenix and
  530. usg-unix-v machines by default.
  531.    This function also affects kill and score file names.  If this
  532. variable is a list, and the list contains the element `not-score', long
  533. file names will not be used for score files, if it contains the element
  534. `not-save', long file names will not be used for saving, and if it
  535. contains the element `not-kill', long file names will not be used for
  536. kill files.
  537.    If you'd like to save articles in a hierarchy that looks something
  538. like a spool, you could
  539.      (setq gnus-use-long-file-name '(not-save)) ; to get a hierarchy
  540.      (setq gnus-default-article-save 'gnus-summary-save-in-file) ; no encoding
  541.    Then just save with `o'.  You'd then read this hierarchy with
  542. ephemeral `nneething' groups--`G D' in the group buffer, and the
  543. toplevel directory as the argument (`~/News/').  Then just walk around
  544. to the groups/directories with `nneething'.
  545. File: gnus,  Node: Decoding Articles,  Next: Article Treatment,  Prev: Saving Articles,  Up: The Summary Buffer
  546. Decoding Articles
  547. =================
  548.    Sometime users post articles (or series of articles) that have been
  549. encoded in some way or other.  Gnus can decode them for you.
  550. * Menu:
  551. * Uuencoded Articles::    Uudecode articles.
  552. * Shared Articles::       Unshar articles.
  553. * PostScript Files::      Split PostScript.
  554. * Decoding Variables::    Variables for a happy decoding.
  555. * Viewing Files::         You want to look at the result of the decoding?
  556.    All these functions use the process/prefix convention (*note
  557. Process/Prefix::.) for finding out what articles to work on, with the
  558. extension that a "single article" means "a single series".  Gnus can
  559. find out by itself what articles belong to a series, decode all the
  560. articles and unpack/view/save the resulting file(s).
  561.    Gnus guesses what articles are in the series according to the
  562. following simplish rule: The subjects must be (nearly) identical,
  563. except for the last two numbers of the line.  (Spaces are largely
  564. ignored, however.)
  565.    For example: If you choose a subject called `cat.gif (2/3)', Gnus
  566. will find all the articles that match the regexp `^cat.gif
  567. ([0-9]+/[0-9]+).*$'.
  568.    Subjects that are nonstandard, like `cat.gif (2/3) Part 6 of a
  569. series', will not be properly recognized by any of the automatic viewing
  570. commands, and you have to mark the articles manually with `#'.
  571. File: gnus,  Node: Uuencoded Articles,  Next: Shared Articles,  Up: Decoding Articles
  572. Uuencoded Articles
  573. ------------------
  574. `X u'
  575.      Uudecodes the current series (`gnus-uu-decode-uu').
  576. `X U'
  577.      Uudecodes and saves the current series
  578.      (`gnus-uu-decode-uu-and-save').
  579. `X v u'
  580.      Uudecodes and views the current series (`gnus-uu-decode-uu-view').
  581. `X v U'
  582.      Uudecodes, views and saves the current series
  583.      (`gnus-uu-decode-uu-and-save-view').
  584.    Remember that these all react to the presence of articles marked with
  585. the process mark.  If, for instance, you'd like to decode and save an
  586. entire newsgroup, you'd typically do `M P a' (`gnus-uu-mark-all') and
  587. then `X U' (`gnus-uu-decode-uu-and-save').
  588.    All this is very much different from how `gnus-uu' worked with GNUS
  589. 4.1, where you had explicit keystrokes for everything under the sun.
  590. This version of `gnus-uu' generally assumes that you mark articles in
  591. some way (*note Setting Process Marks::.) and then press `X u'.
  592.    Note: When trying to decode articles that have names matching
  593. `gnus-uu-notify-files', which is hard-coded to
  594. `[Cc][Ii][Nn][Dd][Yy][0-9]+.\\(gif\\|jpg\\)', `gnus-uu' will
  595. automatically post an article on `comp.unix.wizards' saying that you
  596. have just viewed the file in question.  This feature can't be turned
  597. File: gnus,  Node: Shared Articles,  Next: PostScript Files,  Prev: Uuencoded Articles,  Up: Decoding Articles
  598. Shared Articles
  599. ---------------
  600. `X s'
  601.      Unshars the current series (`gnus-uu-decode-unshar').
  602. `X S'
  603.      Unshars and saves the current series
  604.      (`gnus-uu-decode-unshar-and-save').
  605. `X v s'
  606.      Unshars and views the current series
  607.      (`gnus-uu-decode-unshar-view').
  608. `X v S'
  609.      Unshars, views and saves the current series
  610.      (`gnus-uu-decode-unshar-and-save-view').
  611. File: gnus,  Node: PostScript Files,  Next: Decoding Variables,  Prev: Shared Articles,  Up: Decoding Articles
  612. PostScript Files
  613. ----------------
  614. `X p'
  615.      Unpack the current PostScript series (`gnus-uu-decode-postscript').
  616. `X P'
  617.      Unpack and save the current PostScript series
  618.      (`gnus-uu-decode-postscript-and-save').
  619. `X v p'
  620.      View the current PostScript series
  621.      (`gnus-uu-decode-postscript-view').
  622. `X v P'
  623.      View and save the current PostScript series
  624.      (`gnus-uu-decode-postscript-and-save-view').
  625. File: gnus,  Node: Decoding Variables,  Next: Viewing Files,  Prev: PostScript Files,  Up: Decoding Articles
  626. Decoding Variables
  627. ------------------
  628.    Adjective, not verb.
  629. * Menu:
  630. * Rule Variables::          Variables that say how a file is to be viewed.
  631. * Other Decode Variables::  Other decode variables.
  632. * Uuencoding and Posting::  Variables for customizing uuencoding.
  633. File: gnus,  Node: Rule Variables,  Next: Other Decode Variables,  Up: Decoding Variables
  634. Rule Variables
  635. ..............
  636.    Gnus uses "rule variables" to decide how to view a file.  All these
  637. variables are on the form
  638.            (list '(regexp1 command2)
  639.                  '(regexp2 command2)
  640.                  ...)
  641. `gnus-uu-user-view-rules'
  642.      This variable is consulted first when viewing files.  If you wish
  643.      to use, for instance, `sox' to convert an `.au' sound file, you
  644.      could say something like:
  645.                  (setq gnus-uu-user-view-rules
  646.                    (list '(\"\\\\.au$\" \"sox %s -t .aiff > /dev/audio\")))
  647. `gnus-uu-user-view-rules-end'
  648.      This variable is consulted if Gnus couldn't make any matches from
  649.      the user and default view rules.
  650. `gnus-uu-user-archive-rules'
  651.      This variable can be used to say what commands should be used to
  652.      unpack archives.
  653. File: gnus,  Node: Other Decode Variables,  Next: Uuencoding and Posting,  Prev: Rule Variables,  Up: Decoding Variables
  654. Other Decode Variables
  655. ......................
  656. `gnus-uu-grabbed-file-functions'
  657.      All functions in this list will be called right each file has been
  658.      successfully decoded--so that you can move or view files right
  659.      away, and don't have to wait for all files to be decoded before
  660.      you can do anything.  Ready-made functions you can put in this
  661.      list are:
  662.     `gnus-uu-grab-view'
  663.           View the file.
  664.     `gnus-uu-grab-move'
  665.           Move the file (if you're using a saving function.)
  666. `gnus-uu-ignore-files-by-name'
  667.      Files with name matching this regular expression won't be viewed.
  668. `gnus-uu-ignore-files-by-type'
  669.      Files with a MIME type matching this variable won't be viewed.
  670.      Note that Gnus tries to guess what type the file is based on the
  671.      name.  `gnus-uu' is not a MIME package (yet), so this is slightly
  672.      kludgey.
  673. `gnus-uu-tmp-dir'
  674.      Where `gnus-uu' does its work.
  675. `gnus-uu-do-not-unpack-archives'
  676.      Non-`nil' means that `gnus-uu' won't peek inside archives looking
  677.      for files to display.
  678. `gnus-uu-view-and-save'
  679.      Non-`nil' means that the user will always be asked to save a file
  680.      after viewing it.
  681. `gnus-uu-ignore-default-view-rules'
  682.      Non-`nil' means that `gnus-uu' will ignore the default viewing
  683.      rules.
  684. `gnus-uu-ignore-default-archive-rules'
  685.      Non-`nil' means that `gnus-uu' will ignore the default archive
  686.      unpacking commands.
  687. `gnus-uu-kill-carriage-return'
  688.      Non-`nil' means that `gnus-uu' will strip all carriage returns
  689.      from articles.
  690. `gnus-uu-unmark-articles-not-decoded'
  691.      Non-`nil' means that `gnus-uu' will mark articles that were
  692.      unsuccessfully decoded as unread.
  693. `gnus-uu-correct-stripped-uucode'
  694.      Non-`nil' means that `gnus-uu' will *try* to fix uuencoded files
  695.      that have had trailing spaces deleted.
  696. `gnus-uu-view-with-metamail'
  697.      Non-`nil' means that `gnus-uu' will ignore the viewing commands
  698.      defined by the rule variables and just fudge a MIME content type
  699.      based on the file name.  The result will be fed to `metamail' for
  700.      viewing.
  701. `gnus-uu-save-in-digest'
  702.      Non-`nil' means that `gnus-uu', when asked to save without
  703.      decoding, will save in digests.  If this variable is `nil',
  704.      `gnus-uu' will just save everything in a file without any
  705.      embellishments.  The digesting almost conforms to RFC1153--no easy
  706.      way to specify any meaningful volume and issue numbers were found,
  707.      so I simply dropped them.
  708. File: gnus,  Node: Uuencoding and Posting,  Prev: Other Decode Variables,  Up: Decoding Variables
  709. Uuencoding and Posting
  710. ......................
  711. `gnus-uu-post-include-before-composing'
  712.      Non-`nil' means that `gnus-uu' will ask for a file to encode
  713.      before you compose the article.  If this variable is `t', you can
  714.      either include an encoded file with `C-c C-i' or have one included
  715.      for you when you post the article.
  716. `gnus-uu-post-length'
  717.      Maximum length of an article.  The encoded file will be split into
  718.      how many articles it takes to post the entire file.
  719. `gnus-uu-post-threaded'
  720.      Non-`nil' means that `gnus-uu' will post the encoded file in a
  721.      thread.  This may not be smart, as no other decoder I have seen
  722.      are able to follow threads when collecting uuencoded articles.
  723.      (Well, I have seen one package that does that--`gnus-uu', but
  724.      somehow, I don't think that counts...) Default is `nil'.
  725. `gnus-uu-post-separate-description'
  726.      Non-`nil' means that the description will be posted in a separate
  727.      article.  The first article will typically be numbered (0/x).  If
  728.      this variable is `nil', the description the user enters will be
  729.      included at the beginning of the first article, which will be
  730.      numbered (1/x).  Default is `t'.
  731. File: gnus,  Node: Viewing Files,  Prev: Decoding Variables,  Up: Decoding Articles
  732. Viewing Files
  733. -------------
  734.    After decoding, if the file is some sort of archive, Gnus will
  735. attempt to unpack the archive and see if any of the files in the
  736. archive can be viewed.  For instance, if you have a gzipped tar file
  737. `pics.tar.gz' containing the files `pic1.jpg' and `pic2.gif', Gnus will
  738. uncompress and de-tar the main file, and then view the two pictures.
  739. This unpacking process is recursive, so if the archive contains archives
  740. of archives, it'll all be unpacked.
  741.    Finally, Gnus will normally insert a "pseudo-article" for each
  742. extracted file into the summary buffer.  If you go to these "articles",
  743. you will be prompted for a command to run (usually Gnus will make a
  744. suggestion), and then the command will be run.
  745.    If `gnus-view-pseudo-asynchronously' is `nil', Emacs will wait until
  746. the viewing is done before proceeding.
  747.    If `gnus-view-pseudos' is `automatic', Gnus will not insert the
  748. pseudo-articles into the summary buffer, but view them immediately.  If
  749. this variable is `not-confirm', the user won't even be asked for a
  750. confirmation before viewing is done.
  751.    If `gnus-view-pseudos-separately' is non-`nil', one pseudo-article
  752. will be created for each file to be viewed.  If `nil', all files that
  753. use the same viewing command will be given as a list of parameters to
  754. that command.
  755.    If `gnus-insert-pseudo-articles' is non-`nil', insert
  756. pseudo-articles when decoding.  It is `t' by default.
  757.    So; there you are, reading your *pseudo-articles* in your *virtual
  758. newsgroup* from the *virtual server*; and you think: Why isn't anything
  759. real anymore? How did we get here?
  760. File: gnus,  Node: Article Treatment,  Next: Summary Sorting,  Prev: Decoding Articles,  Up: The Summary Buffer
  761. Article Treatment
  762. =================
  763.    Reading through this huge manual, you may have quite forgotten that
  764. the object of newsreaders are to actually, like, read what people have
  765. written.  Reading articles.  Unfortunately, people are quite bad at
  766. writing, so there are tons of functions and variables to make reading
  767. these articles easier.
  768. * Menu:
  769. * Article Highlighting::    You want to make the article look like fruit salad.
  770. * Article Hiding::          You also want to make certain info go away.
  771. * Article Washing::         Lots of way-neat functions to make life better.
  772. * Article Buttons::         Click on URLs, Message-IDs, addresses and the like.
  773. * Article Date::            Grumble, UT!
  774. File: gnus,  Node: Article Highlighting,  Next: Article Hiding,  Up: Article Treatment
  775. Article Highlighting
  776. --------------------
  777.    Not only do you want your article buffer to look like fruit salad,
  778. but you want it to look like technicolor fruit salad.
  779. `W H a'
  780.      Highlight the current article (`gnus-article-highlight').
  781. `W H h'
  782.      Highlight the headers (`gnus-article-highlight-headers').  The
  783.      highlighting will be done according to the `gnus-header-face-alist'
  784.      variable, which is a list where each element has the form (REGEXP
  785.      NAME CONTENT).  REGEXP is a regular expression for matching the
  786.      header, NAME is the face used for highlighting the header name and
  787.      CONTENT is the face for highlighting the header value.  The first
  788.      match made will be used.  Note that REGEXP shouldn't have `^'
  789.      prepended--Gnus will add one.
  790. `W H c'
  791.      Highlight cited text (`gnus-article-highlight-citation').
  792.      Some variables to customize the citation highlights:
  793.     `gnus-cite-parse-max-size'
  794.           If the article size if bigger than this variable (which is
  795.           25000 by default), no citation highlighting will be performed.
  796.     `gnus-cite-prefix-regexp'
  797.           Regexp matching the longest possible citation prefix on a
  798.           line.
  799.     `gnus-cite-max-prefix'
  800.           Maximum possible length for a citation prefix (default 20).
  801.     `gnus-cite-face-list'
  802.           List of faces used for highlighting citations.  When there
  803.           are citations from multiple articles in the same message,
  804.           Gnus will try to give each citation from each article its own
  805.           face.  This should make it easier to see who wrote what.
  806.     `gnus-supercite-regexp'
  807.           Regexp matching normal Supercite attribution lines.
  808.     `gnus-supercite-secondary-regexp'
  809.           Regexp matching mangled Supercite attribution lines.
  810.     `gnus-cite-minimum-match-count'
  811.           Minimum number of identical prefixes we have to see before we
  812.           believe that it's a citation.
  813.     `gnus-cite-attribution-prefix'
  814.           Regexp matching the beginning of an attribution line.
  815.     `gnus-cite-attribution-suffix'
  816.           Regexp matching the end of an attribution line.
  817.     `gnus-cite-attribution-face'
  818.           Face used for attribution lines.  It is merged with the face
  819.           for the cited text belonging to the attribution.
  820. `W H s'
  821.      Highlight the signature (`gnus-article-highlight-signature').
  822.      Everything after `gnus-signature-separator' in an article will be
  823.      considered a signature and will be highlighted with
  824.      `gnus-signature-face', which is `italic' by default.
  825. File: gnus,  Node: Article Hiding,  Next: Article Washing,  Prev: Article Highlighting,  Up: Article Treatment
  826. Article Hiding
  827. --------------
  828.    Or rather, hiding certain things in each article.  There usually is
  829. much too much cruft in most articles.
  830. `W W a'
  831.      Do maximum hiding on the summary buffer (`gnus-article-hide').
  832. `W W h'
  833.      Hide headers (`gnus-article-hide-headers').  *Note Hiding
  834.      Headers::.
  835. `W W b'
  836.      Hide headers that aren't particularly interesting
  837.      (`gnus-article-hide-boring-headers').  *Note Hiding Headers::.
  838. `W W s'
  839.      Hide signature (`gnus-article-hide-signature').
  840. `W W p'
  841.      Hide PGP signatures (`gnus-article-hide-pgp').
  842. `W W c'
  843.      Hide citation (`gnus-article-hide-citation').  Some variables for
  844.      customizing the hiding:
  845.     `gnus-cite-hide-percentage'
  846.           If the cited text is of a bigger percentage than this
  847.           variable (default 50), hide the cited text.
  848.     `gnus-cite-hide-absolute'
  849.           The cited text must be have at least this length (default 10)
  850.           before it is hidden.
  851.     `gnus-cited-text-button-line-format'
  852.           Gnus adds buttons show where the cited text has been hidden,
  853.           and to allow toggle hiding the text.  The format of the
  854.           variable is specified by this format-like variable.  These
  855.           specs are legal:
  856.          `b'
  857.                Start point of the hidden text.
  858.          `e'
  859.                End point of the hidden text.
  860.          `l'
  861.                Length of the hidden text.
  862.     `gnus-cited-lines-visible'
  863.           The number of lines at the beginning of the cited text to
  864.           leave shown.
  865. `W W C'
  866.      Hide cited text in articles that aren't roots
  867.      (`gnus-article-hide-citation-in-followups').  This isn't very
  868.      useful as an interactive command, but might be a handy function to
  869.      stick in `gnus-article-display-hook' (*note Customizing
  870.      Articles::.).
  871.    All these "hiding" commands are toggles, but if you give a negative
  872. prefix to these commands, they will show what they have previously
  873. hidden.  If you give a positive prefix, they will always hide.
  874.    Also *note Article Highlighting::. for further variables for
  875. citation customization.
  876.    `gnus-signature-limit' provides a limit to what is considered a
  877. signature.  If it is a number, no signature may not be longer (in
  878. characters) than that number.  If it is a function, the function will be
  879. called without any parameters, and if it returns `nil', there is no
  880. signature in the buffer.  If it is a string, it will be used as a
  881. regexp.  If it matches, the text in question is not a signature.
  882. File: gnus,  Node: Article Washing,  Next: Article Buttons,  Prev: Article Hiding,  Up: Article Treatment
  883. Article Washing
  884. ---------------
  885.    We call this "article washing" for a really good reason.  Namely, the
  886. `A' key was taken, so we had to use the `W' key instead.
  887.    "Washing" is defined by us as "changing something from something to
  888. something else", but normally results in something looking better.
  889. Cleaner, perhaps.
  890. `W l'
  891.      Remove page breaks from the current article
  892.      (`gnus-summary-stop-page-breaking').
  893. `W r'
  894.      Do a Caesar rotate (rot13) on the article buffer
  895.      (`gnus-summary-caesar-message').
  896. `W t'
  897.      Toggle whether to display all headers in the article buffer
  898.      (`gnus-summary-toggle-header').
  899. `W v'
  900.      Toggle whether to display all headers in the article buffer
  901.      permanently (`gnus-summary-verbose-header').
  902. `W m'
  903.      Toggle whether to run the article through MIME before displaying
  904.      (`gnus-summary-toggle-mime').
  905. `W o'
  906.      Treat overstrike (`gnus-article-treat-overstrike').
  907. `W w'
  908.      Do word wrap (`gnus-article-fill-cited-article').
  909. `W c'
  910.      Remove CR (`gnus-article-remove-cr').
  911. `W L'
  912.      Remove all blank lines at the end of the article
  913.      (`gnus-article-remove-trailing-blank-lines').
  914. `W q'
  915.      Treat quoted-printable (`gnus-article-de-quoted-unreadable').
  916. `W f'
  917.      Look for and display any X-Face headers
  918.      (`gnus-article-display-x-face').  The command executed by this
  919.      function is given by the `gnus-article-x-face-command' variable.
  920.      If this variable is a string, this string will be executed in a
  921.      sub-shell.  If it is a function, this function will be called with
  922.      the face as the argument.  If the `gnus-article-x-face-too-ugly'
  923.      (which is a regexp) matches the `From' header, the face will not
  924.      be shown.  The default action under Emacs is to fork off an `xv'
  925.      to view the face; under XEmacs the default action is to display
  926.      the face before the `From' header.  (It's nicer if XEmacs has been
  927.      compiled with X-Face support - that will make display somewhat
  928.      faster.  If there's no native X-Face support, Gnus will try to
  929.      convert the `X-Face' header using external programs from the
  930.      `pbmplus' package and friends.)  If you want to have this function
  931.      in the display hook, it should probably come last.
  932. `W b'
  933.      Add clickable buttons to the article (`gnus-article-add-buttons').
  934. `W B'
  935.      Add clickable buttons to the article headers
  936.      (`gnus-article-add-buttons-to-head').
  937.